package com.zh.freechat.domain.user.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zh.webcommon.common.auditor.mp.SimpleEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户的申请好友单关系
 * <p>
 * userId和toUserId的关系：始终是 applyUserId 申请添加 userId
 * 假如：  A 添加 B 为好友，则 applyUserId=A, userId=B, status=等待同意
 * 若   B 同意 A 的添加申请，则 applyUserId=A,userId=B,status=已同意
 * 若   B 拒绝 A 的添加申请，则 applyUserId=A,userId=B,status=已拒绝
 * </p>
 *
 * @author Zhou
 * @date 20:37 2024/3/31
 */
@EqualsAndHashCode(callSuper = true)
@Data
@TableName(value = "ch_apply_friend")
public class ApplyFriend extends SimpleEntity {

    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 目标用户ID
     * 即被添加的用户ID
     */
    private String userId;
    /**
     * 发起申请的用户ID，
     */
    private String applyUserId;

    /**
     * 0-待处理、1-已同意、2-已拒绝
     */
    private int status;

    /**
     * 是否已关闭
     */
    private Boolean closed;

    /**
     * 留言
     */
    private String remark = "";

    /**
     * 发起申请的用户实体
     * 关联字段：friendId
     */
    @TableField(exist = false)
    private ChatUser applyUser;

    public ApplyFriend() {
    }

    public ApplyFriend(String applyUserId, String userId) {
        this(applyUserId, userId, "");
    }

    public ApplyFriend(String applyUserId, String userId, String remark) {
        this.applyUserId = applyUserId;
        this.userId = userId;
        this.closed = false;
        this.remark = remark.trim();
    }

}
